Some computer applications are so large and the number of users of the applications so large that it makes sense to divide up the work of the application among multiple computers and, potentially, to store the information used by the application in many different places. Such applications are commonly referred to as distributed applications. Conventional distributed applications store shared information in multiple databases that may reside on many different computers.
Recently, however, software developers have begun to create distributed object systems. Distributed object systems comprise objects shared in computer memory and one or more processes running on one or more computers. In distributed object systems, then, an additional shared resource, the distributed object, needs to be accounted for.
The processing of database queries presents a problem in distributed object systems. Because the contents of a database may be reflected in a plurality of shared objects, a query has the potential to create a high amount of overhead. Ordinarily, not all shared objects in a shared object system are stored in memory simultaneously. Instead, objects are activated and deactivated as needed. Thus, a query has the potential to cause a large number of objects to be activated, thus consuming a large amount of computing resources for such activation. In addition, one may later want to access other attributes of an object other than those requested by the query. It may be difficult to locate such attributes if only certain attributes of particular objects are returned from the database in response to the query.